home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / tcl / tcl70b2.lha / tcl7.0b2 / tests / append.test < prev    next >
Text File  |  1993-06-19  |  4KB  |  123 lines

  1. # Commands covered:  append lappend
  2. #
  3. # This file contains a collection of tests for one or more of the Tcl
  4. # built-in commands.  Sourcing this file into Tcl runs the tests and
  5. # generates output for errors.  No output means no errors were found.
  6. #
  7. # Copyright (c) 1991-1993 The Regents of the University of California.
  8. # All rights reserved.
  9. #
  10. # Permission is hereby granted, without written agreement and without
  11. # license or royalty fees, to use, copy, modify, and distribute this
  12. # software and its documentation for any purpose, provided that the
  13. # above copyright notice and the following two paragraphs appear in
  14. # all copies of this software.
  15. #
  16. # IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
  17. # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
  18. # OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
  19. # CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  20. #
  21. # THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  22. # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  23. # AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  24. # ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
  25. # PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  26. #
  27. # $Header: /user6/ouster/tcl/tests/RCS/append.test,v 1.6 93/06/19 14:28:25 ouster Exp $ (Berkeley)
  28.  
  29. if {[string compare test [info procs test]] == 1} then {source defs}
  30.  
  31. catch {unset x}
  32. test append-1.1 {append command} {
  33.     catch {unset x}
  34.     list [append x 1 2 abc "long string"] $x
  35. } {{12abclong string} {12abclong string}}
  36. test append-1.2 {append command} {
  37.     set x ""
  38.     list [append x first] [append x second] [append x third] $x
  39. } {first firstsecond firstsecondthird firstsecondthird}
  40.  
  41. test append-2.1 {long appends} {
  42.     set x ""
  43.     for {set i 0} {$i < 1000} {set i [expr $i+1]} {
  44.     append x "foobar "
  45.     }
  46.     set y "foobar"
  47.     set y "$y $y $y $y $y $y $y $y $y $y"
  48.     set y "$y $y $y $y $y $y $y $y $y $y"
  49.     set y "$y $y $y $y $y $y $y $y $y $y "
  50.     expr {$x == $y}
  51. } 1
  52.  
  53. test append-3.1 {append errors} {
  54.     list [catch {append} msg] $msg
  55. } {1 {wrong # args: should be "append varName value ?value ...?"}}
  56. test append-3.2 {append errors} {
  57.     list [catch {append x} msg] $msg
  58. } {1 {wrong # args: should be "append varName value ?value ...?"}}
  59. test append-3.3 {append errors} {
  60.     set x ""
  61.     list [catch {append x(0) 44} msg] $msg
  62. } {1 {can't set "x(0)": variable isn't array}}
  63.  
  64. test append-4.1 {lappend command} {
  65.     catch {unset x}
  66.     list [lappend x 1 2 abc "long string"] $x
  67. } {{1 2 abc {long string}} {1 2 abc {long string}}}
  68. test append-4.2 {lappend command} {
  69.     set x ""
  70.     list [lappend x first] [lappend x second] [lappend x third] $x
  71. } {first {first second} {first second third} {first second third}}
  72. test append-4.3 {lappend command} {
  73.     proc foo {} {
  74.     global x
  75.     set x old
  76.     unset x
  77.     lappend x new
  78.     }
  79.     set result [foo]
  80.     rename foo {}
  81.     set result
  82. } {new}
  83. test append-4.3 {lappend command} {
  84.     set x {}
  85.     lappend x \{\  abc
  86. } {\{\  abc}
  87. test append-4.3 {lappend command} {
  88.     set x {}
  89.     lappend x \{ abc
  90. } {\{ abc}
  91.  
  92. proc check {var size} {
  93.     set l [llength $var]
  94.     if {$l != $size} {
  95.     return "length mismatch: should have been $size, was $l"
  96.     }
  97.     for {set i 0} {$i < $size} {set i [expr $i+1]} {
  98.     set j [lindex $var $i]
  99.     if {$j != "item $i"} {
  100.         return "element $i should have been \"item $i\", was \"$j\"
  101.     }
  102.     }
  103.     return ok
  104. }
  105. test append-5.1 {long lappends} {
  106.     set x ""
  107.     for {set i 0} {$i < 300} {set i [expr $i+1]} {
  108.     lappend x "item $i"
  109.     }
  110.     check $x 300
  111. } ok
  112.  
  113. test append-6.1 {lappend errors} {
  114.     list [catch {lappend} msg] $msg
  115. } {1 {wrong # args: should be "lappend varName value ?value ...?"}}
  116. test append-6.2 {lappend errors} {
  117.     list [catch {lappend x} msg] $msg
  118. } {1 {wrong # args: should be "lappend varName value ?value ...?"}}
  119. test append-6.3 {lappend errors} {
  120.     set x ""
  121.     list [catch {lappend x(0) 44} msg] $msg
  122. } {1 {can't set "x(0)": variable isn't array}}
  123.